<?php

class CajasController extends AppController {
    var $name = 'Cajas';
    var $uses = array('Caja','TiendaLocal','Documento');
    var $components = array('Utilitario','Interfaz','Vista','Maestro','Util');
    var $helpers = array('Html','Ajax','Javascript','Vista','Interfaz');
    var $layout = "ajax";

    function beforeFilter(){
        $this->validar();
    }
    
    function index($busq = null) {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title("Puntos - Cajas por Tienda");
        $this->set('busq', $busq);

        $tiendas = $this->Session->read('tiendas_disponibles');
        $listaTiendasUsuario = $this->Maestro->listar_tienda_usuarios($tiendas);
        $listaTiendasPermitidas = $this->Util->tiendasActivas($listaTiendasUsuario);

        $tiendasId = array();

        foreach ($listaTiendasPermitidas as $llave => $valor) {
            $tiendasId[] = $llave;
        }

        $listaTiendas = $this->TiendaLocal->find('all', array('conditions' => array('TiendaLocal.id' => $tiendasId, 'TiendaLocal.estatus' => 1), 'order' => 'TiendaLocal.codigo'));
        $this->set('data', $listaTiendas);
    }
    
    public function nuevo() {
        $this->Tienda->virtualFields['nombrecompleto'] = 'Tienda.codigo || \'-\' || Tienda.nombre';

        $tiendas = $this->Session->read('tiendas_disponibles');
        $listaTiendasUsuario = $this->Maestro->listar_tienda_usuarios($tiendas);
        $listaTiendasPermitidas = $this->Util->tiendasActivas($listaTiendasUsuario);

        $tiendasId = array();

        foreach ($listaTiendasPermitidas as $llave => $valor) {
            $tiendasId[] = $llave;
        }

        $listaTiendas = $this->TiendaLocal->find('list', array('fields' => array('TiendaLocal.id', 'TiendaLocal.nombrecompleto'), 'conditions' => array('TiendaLocal.id' => $tiendasId, 'TiendaLocal.estatus' => 1), 'order' => 'TiendaLocal.id'));
        $this->set('listaTiendas', $listaTiendas);
        $tipos=array('1'=>'Correlativo General','2'=>'Correlativo Individual');
        $this->set('tipos', $tipos);
    }
    
    public function buscar_documentos($id_tienda=null, $tipo=null) {
        if(!empty($id_tienda) && !empty($tipo)) {            
            $this->set('tipo', $tipo);
            $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $id_tienda)));
            $BdPunto = $tienda['TiendaLocal']['base_datos'];
            $ObjPunto = $this->Maestro->modelo('punto', 'Punto', $BdPunto);
            $sql = "SELECT 'C'||lpad((COUNT(id) + 1)::text,4,'0') AS total FROM puntos";
            $codigo = $ObjPunto->query($sql);
            echo "<script type='text/javascript'>
            document.getElementById('codigo').value='{$codigo[0][0]['total']}';
            </script>";
            if($tipo==1) {
                $doc=$this->Documento->find('all',array('conditions'=>array('Documento.estatus'=>1)));
                $this->set('doc',$doc);
                
                $ObjSerial = $this->Maestro->modelo('punto', 'Serial', $BdPunto);
                $ObjSerial->virtualFields['nombrecompleto'] = 'Serial.serie || \'(\' || Serial.desde || \'-\'  || Serial.hasta || \')\'';
                $listaSerial = $ObjSerial->find('list', array('fields' => array('id', 'nombrecompleto'), 'conditions' => array('Serial.estatus' => 1), 'order' => 'Serial.id desc'));
                $this->set('listaSerial', $listaSerial);
                $ObjSecuencia = $this->Maestro->modelo('punto', 'Secuencia', $BdPunto);
                $secuencia = $ObjSecuencia->find('first', array('conditions' => array('Secuencia.estatus' => 1)));
                $this->set('secuencia',$secuencia);
            } else {
                $ObjCorrelativo = $this->Maestro->modelo('punto', 'Correlativo', $BdPunto);
                $listaCorrelativo = $ObjCorrelativo->find('list', array('fields' => array('id', 'nombre'), 'conditions' => array('Correlativo.estatus' => 1)));
                $this->set('listaCorrelativo',$listaCorrelativo);
            }
            
        } else {
            $this->Vista->mensaje("Documento Inválido", 'ERROR');
            $this->render("../" . PRINCIPAL . "/mensajes");
        }
    }

    public function buscar_documentos_correlativo($id_tienda=null, $tipo=null,$co_id=null) {
        if(!empty($id_tienda) && !empty($tipo)  && !empty($co_id)){
            $doc=$this->Documento->find('all',array('conditions'=>array('Documento.estatus'=>1)));
            $this->set('doc',$doc);
            $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $id_tienda)));
            $BdPunto = $tienda['TiendaLocal']['base_datos'];
            $ObjSerial = $this->Maestro->modelo('punto', 'Serial', $BdPunto);
            $ObjSerial->virtualFields['nombrecompleto'] = 'Serial.serie || \'(\' || Serial.desde || \'-\'  || Serial.hasta || \')\'';
            $listaSerial = $ObjSerial->find('list', array('fields' => array('id', 'nombrecompleto'), 'conditions' => array('Serial.estatus' => 1), 'order' => 'Serial.id desc'));
            $this->set('listaSerial', $listaSerial);
            $ObjCorrelativo = $this->Maestro->modelo('punto', 'Correlativo', $BdPunto);
            $correlativo = $ObjCorrelativo->find('first', array('conditions' => array('Correlativo.id' => $co_id)));
            $this->set('correlativo',$correlativo);  
        }
        else{
            $this->Vista->mensaje("Documento Inválido", 'ERROR');
            $this->render("../" . PRINCIPAL . "/mensajes");
        }
    }
    public function guardar(){
        $data = $this->request->data;
        if (!$this->Vista->empyt($data)) {
            $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $data['tienda_id'])));
            $BdPunto = $tienda['TiendaLocal']['base_datos'];
            $ObjPunto = $this->Maestro->modelo('punto', 'Punto', $BdPunto);
            $ObjPunto->query('BEGIN WORK');
            $sql = "SELECT 'C'||lpad((COUNT(id) + 1)::text,4,'0') AS total FROM puntos";
            $codigo = $ObjPunto->query($sql);
            $data['codigo']=$codigo[0][0]['total'];
            if (!$this->Vista->verifica_punto('Punto', $ObjPunto, 'codigo', $data['codigo'], 'codigo')) {
                if (!$this->Vista->verifica_punto('Punto', $ObjPunto, 'nombre', $data['nombre'], 'nombre')) {
                     
                    $punto['Punto']['codigo']=$this->Interfaz->mayuscula($data['codigo']);
                    $punto['Punto']['nombre']=$this->Interfaz->mayuscula($data['nombre']);
                    $punto['Punto']['tienda_id']=$data['tienda_id'];
                    $punto['Punto']['usuario_id']= $this->Interfaz->id($_SESSION['usuario_id']);
                    $punto['Punto']['tipo_config']=$data['tipo'];
                    $punto['Punto']['estatus']=2;
                    if($ObjPunto->save($punto)){
                        $punto_id=$ObjPunto->id;
                        if($data['tipo']==1){
                            $ObjSecuencia = $this->Maestro->modelo('punto', 'Secuencia', $BdPunto);
                            $base = $ObjSecuencia->find('first', array('conditions' => array('Secuencia.id' =>  $this->Interfaz->id($data['secuencia_id']))));
                            $indice='Secuencia';
                            $bien=1;
                        }
                        else{
                            $bien=0;
                            $ObjPuntoCorrelativo = $this->Maestro->modelo('punto', 'PuntoCorrelativo', $BdPunto);
                            $puncor['PuntoCorrelativo']['punto_id']=$punto_id;
                            $puncor['PuntoCorrelativo']['correlativo_id']=$data['correlativo_id']; 
                            $puncor['PuntoCorrelativo']['impresora_id']=1;
                            $puncor['PuntoCorrelativo']['usuario_id']=$this->Interfaz->id($_SESSION['usuario_id']);
                            $puncor['PuntoCorrelativo']['estatus']=1;
                            if($ObjPuntoCorrelativo->save($puncor)){
                                $ObjCorrelativo = $this->Maestro->modelo('punto', 'Correlativo', $BdPunto);
                                $base = $ObjCorrelativo->find('first', array('conditions' => array('Correlativo.id' => $data['correlativo_id'])));
                                $indice='Correlativo';
                                $bien=1;
                            }
                            else{
                                $this->Vista->mensaje("Ocurrio un error Guardando Correlativo", 'ERROR');
                                $ObjPunto->query('ROLLBACK');
                            }
                            
                        }
                        if($bien==1){
                            $doc=$this->Documento->find('all',array('fields' => array('Documento.nombre','Documento.id','Documento.campo_bd'),'conditions'=>array('Documento.estatus'=>1)));
                            $ptoserial=array();
                            $cs=0;
                            foreach ($doc as $valor) {
                                $nom='numero_'.$valor['Documento']['id'];
                                $apl_for='aplica_'.$valor['Documento']['id'];
                                $ser='serial_'.$valor['Documento']['id'];
                                $c1=$valor['Documento']['campo_bd'];
                                $c2='ctl_'.$valor['Documento']['campo_bd'];
                                
                                if($base[$indice][$c2]==1){
                                    $ptoserial[$cs]['SerialPunto']['serial_id']=$data[$ser];
                                    $ptoserial[$cs]['SerialPunto']['punto_id']=$punto_id;
                                    $ptoserial[$cs]['SerialPunto']['impresora_id']=1;
                                    $ptoserial[$cs]['SerialPunto']['usuario_id']=$this->Interfaz->id($_SESSION['usuario_id']);
                                    $ptoserial[$cs]['SerialPunto']['documento']=$valor['Documento']['nombre'];
                                    $cs++;
                                }
                            }
                            $ObjSerialPunto = $this->Maestro->modelo('punto', 'SerialPunto', $BdPunto);
                            if ($ObjSerialPunto->saveall($ptoserial)) {                                
                                $this->Vista->cerrar_ventana($data['vent']);
                                $this->Vista->mensaje("Punto-Caja Guardada Exitosamente!!!", 'EXITO');
                                $ObjPunto->query('COMMIT');
                                
                            } else {
                                $this->Vista->mensaje("Ocurrio un error Guardando Punto-Caja", 'ERROR');
                                $ObjPunto->query('ROLLBACK');
                            }
                        }
                    }
                    else{
                        $this->Vista->mensaje("Ocurrio un error Guardando", 'ERROR');
                        $ObjCorrelativo->query('ROLLBACK');
                    }
                } else {
                    $this->Vista->mensaje("Nombre del Punto-Caja ya existe!!!", 'ERROR');
                }
            } else {
                $this->Vista->mensaje("Codigo del Punto-Caja ya existe!!!", 'ERROR');
            }
        } else {
            $this->Vista->mensaje("Faltan datos requeridos!!!", 'ERROR');
        }
        $this->render("../" . PRINCIPAL . "/mensajes");
    }

    public function ver($idTienda = null) {
        $idTienda = $this->Interfaz->id($idTienda);
        $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $idTienda)));
        $BdPunto = $tienda['TiendaLocal']['base_datos'];
        $ObjPunto = $this->Maestro->modelo('punto', 'Punto', $BdPunto);
        $listaPunto = $ObjPunto->find('all', array('conditions' => array('Punto.id >' => 0)));

        $this->set('data', $listaPunto);
        $this->set('busq', null);
        $this->set('datosTienda', $tienda);
        $this->set('idTienda', $idTienda);
    }

    public function modificar($tipo=2,$idCaja = null, $idTienda = null) {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA 
        $data = $this->request->data;
        if (!empty($data)) {
            if (!$this->Vista->empyt($data)) {
                /*
                extract($data);
                $idTienda = $this->Interfaz->id($idTiendaMod);
                $BdPunto = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos', 'conditions' => array('TiendaLocal.id' => $idTienda)));
                $BdPunto = $BdPunto['TiendaLocal']['base_datos'];
                $ObjCorrelativo = $this->Maestro->modelo('punto', 'Correlativo', $BdPunto);
                $id = $this->Interfaz->id($id_correlativo);
                
                //if (!$this->Vista->verifica_punto('Correlativo', $ObjCorrelativo, 'nombre', $nombre, 'nombre',$id)) {
                    $doc=$this->Documento->find('all',array('fields' => array('Documento.id','Documento.campo_bd'),'conditions'=>array('Documento.estatus'=>1)));
                    $ObjCorrelativo->query('BEGIN WORK');
                    $datos['Serial']['id'] = $id;
                    $corre=array();
                    foreach ($doc as $valor) {
                        $nom='numero_'.$valor['Documento']['id'];
                        $apl_for='aplica_'.$valor['Documento']['id'];
                        $c1=$valor['Documento']['campo_bd'];
                        $c2='ctl_'.$valor['Documento']['campo_bd'];
                        $corre['Correlativo'][$c1]=$data[$nom]-1;
                        $corre['Correlativo'][$c2]=$data[$apl_for];
                    }
                    $corre['Correlativo']['nombre']=$data['nombre'];
                    $corre['Correlativo']['id']=$id;
                    if ($ObjCorrelativo->save($corre)) {
                        $ObjCorrelativo->query('COMMIT');
                        $this->Vista->mensaje("Correlativo (Secuencia Individual) Actualizada Exitosamente", 'EXITO');
                        //$this->log();
                        $this->Vista->cerrar_ventana($vent);
                    } else {
                        $ObjCorrelativo->query('ROLLBACK');
                        $this->Vista->mensaje("Ocurrio un error Modificando", 'ERROR');
                    }
                    
                /*} else {
                    $this->Vista->mensaje("NOmbre de Correlativo ya existe!!!", 'ERROR');
                }*/
                echo "Falta hacer que guarde";
            }
            else
                $this->Vista->mensaje("Faltan campos requeridos", 'ERROR');
            
            $this->render("../" . PRINCIPAL . "/mensajes");
        }
        else {
            $idCaja = $this->Interfaz->id($idCaja);
            $idTienda = $this->Interfaz->id($idTienda);
            if (is_numeric($idCaja)) {
                $this->Tienda->virtualFields['nombrecompleto'] = 'Tienda.codigo || \'-\' || Tienda.nombre';
                $listaTiendas = $this->Tienda->find('list', array('fields' => array('id', 'nombrecompleto'), 'conditions' => array('Tienda.id >' => '0', 'Tienda.estatus' => 1), 'order' => 'Tienda.id'));
                $this->set('listaTiendas', $listaTiendas);
                $tipos=array('1'=>'Correlativo General','2'=>'Correlativo Individual');
                $this->set('tipos', $tipos);
                $doc=$this->Documento->find('all',array('conditions'=>array('Documento.estatus'=>1)));
                $this->set('doc',$doc);
                $BdPunto = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos', 'conditions' => array('TiendaLocal.id' => $idTienda)));
                $BdPunto = $BdPunto['TiendaLocal']['base_datos'];
                $ObjPunto = $this->Maestro->modelo('punto', 'Punto', $BdPunto);
                $datos = $ObjPunto->find('first', array('conditions' => array('Punto.id' => $idCaja)));
                $this->set('data_punto', $datos);
                $this->set('idTienda', $idTienda);
                $this->set('tipo', $tipo);
                if($datos['Punto']['tipo_config']==1){
                    $ObjSecuencia = $this->Maestro->modelo('punto', 'Secuencia', $BdPunto);
                    $secuencia = $ObjSecuencia->find('first', array('conditions' => array('Secuencia.estatus' => 1)));
                    $this->set('secuencia',$secuencia);
                }
                else{
                    $ObjCorrelativo = $this->Maestro->modelo('punto', 'Correlativo', $BdPunto);
                    $listaCorrelativo = $ObjCorrelativo->find('list', array('fields' => array('id', 'nombre'), 'conditions' => array('Correlativo.estatus' => 1)));
                    $this->set('listaCorrelativo',$listaCorrelativo);
                    $ObjPuntoCorrelativo = $this->Maestro->modelo('punto', 'PuntoCorrelativo', $BdPunto);
                    $dc = $ObjPuntoCorrelativo->find('first', array('conditions' => array('PuntoCorrelativo.punto_id' => $idCaja)));
                    $correlativo = $ObjCorrelativo->find('first', array('conditions' => array('Correlativo.id' => $dc['PuntoCorrelativo']['correlativo_id'])));
                    $this->set('correlativo',$correlativo);
                    $this->set('correlativo_id',$dc['PuntoCorrelativo']['correlativo_id']);  
                }
                $ObjSerial = $this->Maestro->modelo('punto', 'Serial', $BdPunto);
                $ObjSerial->virtualFields['nombrecompleto'] = 'Serial.serie || \'(\' || Serial.desde || \'-\'  || Serial.hasta || \')\'';
                $listaSerial = $ObjSerial->find('list', array('fields' => array('id', 'nombrecompleto'), 'conditions' => array('Serial.estatus' => 1), 'order' => 'Serial.id desc'));
                $this->set('listaSerial', $listaSerial);
                $ObjSerialPunto = $this->Maestro->modelo('punto', 'SerialPunto', $BdPunto);
                $data_serial = $ObjSerialPunto->find('all',array('conditions'=>array('SerialPunto.punto_id' => $idCaja)));
                $this->set('data_serial', $data_serial);
            } else {
                $this->Vista->mensaje("Punto - Caja Inv&aacute;lido", 'ERROR');
                $this->render("../" . PRINCIPAL . "/mensajes");
            }
        }
    }

    public function cambiar($id = null, $idTienda = null, $estatus = null) {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $id = $this->Interfaz->id($id);
        if (is_numeric($id)) {
            $idTienda = $this->Interfaz->id($idTienda);
            $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $idTienda)));
            $BdPunto = $tienda['TiendaLocal']['base_datos'];
            $ObjPunto = $this->Maestro->modelo('punto', 'Punto', $BdPunto);
            $ObjPunto->query('BEGIN WORK');
            if ($estatus == 'no') {
                //$msj = "Punto-Caja Anulada Exitosamente";
                $estatus = 1;
            } else {
                //$msj = "Punto-Caja Habilitado Exitosamente";
                $estatus = 0;
            }
            $data['Punto']['id'] = $id;
            $data['Punto']['estatus'] = $estatus;
            if ($ObjPunto->save($data)) {
                $ObjPunto->query('COMMIT');
                //$this->Vista->mensaje($msj, 'EXITO');
                //$this->log();
            } else {
                $ObjPunto->query('ROLLBACK');
                //$this->Vista->mensaje($msj, 'ERROR');
            }
        } else {
            $this->Vista->mensaje("Punto-Caja Inv&aacute;lido", 'ERROR');
        }
        $this->render("../" . PRINCIPAL . "/mensajes");
    }
    
    public function desconectar($id = null, $idTienda = null, $estatus = null) {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $id = $this->Interfaz->id($id);
        if (is_numeric($id)) {
            $idTienda = $this->Interfaz->id($idTienda);
            $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $idTienda)));
            $BdPunto = $tienda['TiendaLocal']['base_datos'];
            $ObjPunto = $this->Maestro->modelo('punto', 'Punto', $BdPunto);
            $ObjPunto->query('BEGIN WORK');
            $msj = "Punto-Caja Desconectado Exitosamente";
            
            $data['Punto']['id'] = $id;
            $data['Punto']['conectado'] = 0;
            if ($ObjPunto->save($data)) {
                $ObjPunto->query('COMMIT');
                $this->Vista->mensaje($msj, 'EXITO');
                //$this->log();
            } else {
                $ObjPunto->query('ROLLBACK');
                $this->Vista->mensaje($msj, 'ERROR');
            }
        } else {
            $this->Vista->mensaje("Punto-Caja Inv&aacute;lido ", 'ERROR');
        }
        $this->render("../" . PRINCIPAL . "/mensajes");
    }
    
    public function permitir_cierre($id = null, $idTienda = null, $estatus = null) {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $id = $this->Interfaz->id($id);
        if (is_numeric($id)) {
            $idTienda = $this->Interfaz->id($idTienda);
            $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $idTienda)));
            $BdPunto = $tienda['TiendaLocal']['base_datos'];
            $ObjPunto = $this->Maestro->modelo('punto', 'Punto', $BdPunto);
            $ObjPunto->query('BEGIN WORK');
            //$pto = $ObjPunto->find('first', array('fields' => array('Punto.permiso_cierre'), 'conditions' => array('Punto.id' => $id)));
            
            //if($pto['Punto']['permiso_cierre']==1){
            if($estatus == 'no'){
                //$msj = "Punto-Caja Inhabilitado Para realizar Cierre de Cajas Pendientes";
                $estatus = 0;
            } else {
                //$msj = "Punto-Caja Habilitado Para realizar Cierre de Cajas Pendientes";
                $estatus = 1;
            }
            
            $data['Punto']['id'] = $id;
            $data['Punto']['permiso_cierre'] = $estatus;
            if ($ObjPunto->save($data)) {
                $ObjPunto->query('COMMIT');
                //$this->Vista->mensaje($msj, 'EXITO');
                //$this->log();
            } else {
                $ObjPunto->query('ROLLBACK');
                //$this->Vista->mensaje($msj, 'ERROR');
            }
        } else {
            $this->Vista->mensaje("Punto-Caja Inv&aacute;lido ", 'ERROR');
        }
        $this->render("../" . PRINCIPAL . "/mensajes");
    }

    public function generar_clavepermiso($id = null, $idTienda = null, $estatus = null) {
        $id = $this->Interfaz->id($id);
        if (is_numeric($id)) {
            $idTienda = $this->Interfaz->id($idTienda);
            $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.id, TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $idTienda)));

            $BdPunto = $tienda['TiendaLocal']['base_datos'];
            $ObjPunto = $this->Maestro->modelo('punto', 'Punto', $BdPunto);
            $ObjPunto->query('BEGIN WORK');
            $pto = $ObjPunto->find('first', array('all', 'conditions' => array('Punto.id' => $id)));
            
            $this->set('datosTienda', $tienda);
            $this->set('datosPunto', $pto);
            $this->set('idTienda', $idTienda);
            $this->set('idPunto', $id);
        } else {
            $this->Vista->mensaje("Punto-Caja Inv&aacute;lido ", 'ERROR');
            $this->render("../" . PRINCIPAL . "/mensajes");
        }
    }

    public function guardar_clavepermiso($idTienda, $idPunto, $id_vent) {
        extract($this->request->data);
        $idTienda = $this->Interfaz->id($idTienda);
        $idPunto = $this->Interfaz->id($idPunto);

        if(is_numeric($idTienda) and is_numeric($idPunto)) {
            $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.id, TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $idTienda)));

            $BdPunto = $tienda['TiendaLocal']['base_datos'];
            $ObjClavePermiso = $this->Maestro->modelo('punto', 'ClavePermiso', $BdPunto);

            $data['ClavePermiso']['punto_id'] = $idPunto;
            $data['ClavePermiso']['clave'] = $clave;
            $data['ClavePermiso']['tipo'] = $tipoClave;

            $misDatos = $ObjClavePermiso->find('all', array('fields' => array('ClavePermiso.id'), 'conditions' => array('ClavePermiso.punto_id' => $idPunto, 'ClavePermiso.estatus' => 1, 'ClavePermiso.tipo' => $tipoClave)));

            if(empty($misDatos)) {
                if($ObjClavePermiso->save($data)) {
                    $this->Vista->mensaje("Se ha guardado correctamente la clave", 'EXITO');
                    $this->Vista->cerrar_ventana($id_vent);
                } else {
                    $this->Vista->mensaje("Hubo un problema inesperado, por favor intente denuevo", 'ERROR');
                }
            } else {
                $data['ClavePermiso']['id'] = $misDatos[0]['ClavePermiso']['id'];
                if($ObjClavePermiso->save($data)) {
                    $this->Vista->mensaje("Se ha actualizado la clave con exito", 'EXITO');
                    $this->Vista->cerrar_ventana($id_vent);
                } else {
                    $this->Vista->mensaje("Hubo un problema inesperado, por favor intente denuevo", 'ERROR');
                }
            }
        } else {
            $this->Vista->mensaje("Punto-Caja Inv&aacute;lido ", 'ERROR');
        }
        $this->render("../" . PRINCIPAL . "/mensajes");
    }
    
     public function configurar($idCaja = null, $idTienda = null, $vent = null) {
        $this->Vista->cerrar_ventana($vent);
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA 
        $idCaja = $this->Interfaz->id($idCaja);
        $idTienda = $this->Interfaz->id($idTienda);
        if (is_numeric($idCaja)) {
            $this->Tienda->virtualFields['nombrecompleto'] = 'Tienda.codigo || \'-\' || Tienda.nombre';
            $listaTiendas = $this->Tienda->find('list', array('fields' => array('id', 'nombrecompleto'), 'conditions' => array('Tienda.id >' => '0', 'Tienda.estatus' => 1), 'order' => 'Tienda.id'));
            $this->set('listaTiendas', $listaTiendas);
            //$tipos=array('1'=>'Correlativo General','2'=>'Correlativo Individual');
            $tipos="Correlativo General";
            $this->set('tipos', $tipos);
            $BdPunto = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos', 'conditions' => array('TiendaLocal.id' => $idTienda)));
            $BdPunto = $BdPunto['TiendaLocal']['base_datos'];
            $this->set('BdPunto', $BdPunto);
            $ObjPunto = $this->Maestro->modelo('punto', 'Punto', $BdPunto);
            $datos = $ObjPunto->find('first', array('conditions' => array('Punto.id' => $idCaja)));
            $this->set('data_punto', $datos);
            $this->set('idTienda', $idTienda);
            $this->set('idCaja', $idCaja);
            $puntos = $ObjPunto->find('first', array('fields' => array('Punto.ip', 'Punto.clave','Punto.uuid','Punto.capta_huella','Punto.permiso_cierre','Punto.estatus'), 'conditions' => array('Punto.id' => $datos['Punto']['id'])));
            $this->set('punto', $puntos);
        } else {
            $this->Vista->mensaje("Punto - Caja Inv&aacute;lido", 'ERROR');
            $this->render("../" . PRINCIPAL . "/mensajes");
        }
    }
    
    
    public function guardar_conf() {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA 
        $data = $this->request->data;
        if (!empty($data)) {
            if (!$this->Vista->empyt($data)) {
                extract($data);
                $this->Vista->cerrar_ventana($vent);

                $capta_huella = !isset($capta_huella) ? 0 : $capta_huella;
                $permitir_cierre = !isset($permitir_cierre) ? 'no' : $permitir_cierre;
                $bloquear = !isset($bloquear) ? 'no' : $bloquear;
                $activar_caja = !empty($activar_caja) ? 'no' : '';

                if($permitir_cierre){
                    $this->permitir_cierre($caja_id, $tienda_id, $permitir_cierre);
                }
                if($bloquear){
                    $this->cambiar($caja_id, $tienda_id, $bloquear);
                }
                if($activar_caja){
                    $this->cambiar($caja_id, $tienda_id, $activar_caja);
                }
                $idPunto = $this->Interfaz->id($id_punto);
                $Bd_Punto = $this->Interfaz->id($BdPunto);
                $ObjPunto = $this->Maestro->modelo('punto', 'Punto', $Bd_Punto);
                if (filter_var($ip, FILTER_VALIDATE_IP)) {
                    $misdatos['Punto']['id'] = $idPunto;
                    $misdatos['Punto']['ip'] = $ip;
                    $misdatos['Punto']['clave'] = strtoupper($clave);
                    $misdatos['Punto']['uuid'] = $serial;
                    $misdatos['Punto']['capta_huella'] = $capta_huella;
                    if($ObjPunto->save($misdatos)) {
                        $this->Vista->mensaje("Cambios guardados correctamente!", 'EXITO');
                    } else {
                        $this->Vista->mensaje("Hubo un problema inesperado, por favor intente de nuevo", 'ERROR');
                    }
                } else {
                    $this->Vista->mensaje("Esta dirección IP ($ip) NO es válida.", 'ERROR');
                }
            } else {
                $this->Vista->mensaje("Faltan campos requeridos", 'ERROR');
            }
        } else {
            $this->Vista->mensaje("Ocurrio un problema inesperado, por favor intente de nuevo", 'ERROR');
        }
        $this->render("../" . PRINCIPAL . "/mensajes");
    }
    
    /*public function pdf($status, $idCaja, $idTienda) {
        if (!empty($idCaja) && !empty($idTienda)) {
            $idCaja = $this->Interfaz->id($idCaja);
            $idTienda = $this->Interfaz->id($idTienda);
            
            $tienda = $this->TiendaLocal->find('first', array('fields' => 'base_datos', 'conditions' => array('id' => $idTienda)));
            $BdPunto = $tienda['TiendaLocal']['base_datos'];
            $ObjPunto = $this->Maestro->modelo('punto', 'Punto', $BdPunto);
                $datos['Punto']['id'] = $idCaja;
                $datos['Punto']['gen_pdf'] = $status;
                if($ObjPunto->save($datos)) {
                    if($status == 1) {
                        $this->Vista->mensaje("Habilitado PDF en el navegador correctamente!", 'EXITO');
                    } else {
                        $this->Vista->mensaje("Deshabilitado PDF en el navegador correctamente!", 'EXITO');
                    }
                } else {
                    $this->Vista->mensaje("Ocurrio un problema inesperado, por favor intente de nuevo", 'ERROR');
                }
            
        } else {
            $this->Vista->mensaje("Ocurrio un problema inesperado, por favor intente de nuevo", 'ERROR');
        }
        $this->render("../" . PRINCIPAL . "/mensajes");
    }*/

}
?>